package org.glut.wechat.moments.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.glut.wechat.moments.domain.Moments;
import org.glut.wechat.moments.dto.MomentPublishDTO;
import org.glut.wechat.moments.dto.MomentUpdateDTO;
import org.glut.wechat.moments.vo.MainMomentItemVO;
import org.glut.wechat.moments.vo.MainMomentWrapperVO;
import org.glut.wechat.moments.vo.UserMomentItemVO;
import org.glut.wechat.moments.vo.UserMomentWrapperVO;

/**
 * 朋友圈服务接口
 */
public interface MomentsService extends IService<Moments> {

    /**
     * 发布朋友圈
     * @param moments 朋友圈对象
     * @return 是否成功
     */
    void publishMoments(MomentPublishDTO moments);

    /**
     * 根据用户ID分页查询朋友圈
     * @param page 分页对象
     * @param userId 用户ID
     * @return 分页结果
     */
    UserMomentWrapperVO getMomentsByUserId(Page<UserMomentItemVO> page, Integer userId, Integer currentUserId);

    /**
     * 分页查询公开的朋友圈
     * @return 分页结果
     */
    MainMomentWrapperVO getPublicMoments(Page<MainMomentItemVO> page, Integer userId);


    /**
     * 删除朋友圈
     * @param id 朋友圈ID
     * @return 是否成功
     */
    void deleteMoments(Integer id);

    /**
     * 根据ID获取朋友圈详情
     * @param id 朋友圈ID
     * @return 朋友圈对象
     */
    MainMomentItemVO getMomentsById(Integer id, Integer userId);

    void updateMoments(MomentUpdateDTO momentPublishDTO);
}
